package com.example.comment.service;

import com.example.comment.base.dto.CommentAddDTO;
import com.example.comment.base.dto.CommentQueryDTO;
import com.example.comment.base.entity.Comment;
import com.example.comment.base.vo.CommentVO;
import com.example.comment.utils.PageResult;

/**
 * @author QingZeyu
 * @date 2024/5/6 10:40
 */
public interface CommentService {
    /**
     * 分页查询评论信息
     *
     * @param dto 包含分页条件和查询条件的DTO（数据传输对象）
     * @return 返回评论的分页结果，包含当前页的评论列表、总页数、总记录数等信息
     */
    PageResult<CommentVO> page(CommentQueryDTO dto);

    /**
     * 添加评论的方法
     *
     * @param dto 评论添加数据传输对象，包含添加评论所需的所有信息
     * @return 返回一个布尔值，表示评论是否添加成功。成功返回true，失败返回false
     */
    Boolean addComment(CommentAddDTO dto);

    /**
     * 根据评论ID获取对应的评论信息
     *
     * @param id 评论的唯一标识符
     * @return 返回对应ID的评论对象，如果找不到则返回null
     */
    Comment getComment(Long id);

    /**
     * 删除评论的方法
     *
     * @param userId 用户ID，标识评论的归属用户
     * @param commentId 评论ID，标识要删除的具体评论
     * @return 返回一个布尔值，成功删除时返回true，失败时返回false
     */
    Boolean removeComment(Long userId,Long commentId);
}
